﻿#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

class BaseSame
{
public:
	BaseSame()
	{
		m_A = 100;
	}
	void func()
	{
		cout << "BaseSame的func调用！" << endl;
	}
	void func(int a)
	{
		cout << "BaseSame的func(int a)调用！" << endl;
	}

	int m_A;
};
class SonSame :public BaseSame
{
public:
	SonSame()
	{
		m_A = 200;
	}
	void func()
	{
		cout << "SonSame的func调用！" << endl;
	}

	int m_A;
};
void testSame()
{
	SonSame s1;
	//1.就近原则；
	cout << s1.m_A << endl;//200
	s1.func();//SonSame的func调用！

	//4.如果子类与父类的成员函数相同，子类会把父类的所有同名版本都隐藏掉，包括同名有参函数！
	//s1.func(10);

	//2.调用父类中的m_A;
	//3.如果子类和父类拥有同名的函数，属性，子类并不会覆盖父类的成员！
	cout << s1.BaseSame::m_A << endl;//100
	s1.BaseSame::func();//BaseSame的func调用！

	//5.想调用父类的方法，必须加作用域；
	s1.BaseSame::func(20);//BaseSame的func(int a)调用！

}

//main289：继承中的同名成员处理
int main289()
{
	testSame();

	system("pause");
	return EXIT_SUCCESS;
}